home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / adpcmnon.arc / RCV.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-05-02  |  14.2 KB  |  726 lines

  1.     PAGE
  2. *;**************************************************
  3. *; now execute receive code
  4. *;**************************************************
  5. *;
  6. GET32K    IN    RI,IN32K    ; read 4-bit sample
  7. *;
  8. *;**************************************************
  9. *; RECEIVER SUBROUTINES
  10. *;**************************************************
  11. *; COMPUTE SCALE FACTOR AND  BOTH PARTIAL AND FULL 
  12. *; SIGNAL ESTIMATE FROM PREVIOUS SAMPLES DATA -- 
  13. *; THEN COMPUTE DIFFERENCE SIGNAL
  14. *;**************************************************
  15. *;
  16. *; compute SEZ-- partial signal estimate 
  17. *;
  18. *;  RSEZ(k) = RB1(k-1)*RDQ(k-1) + ... + RB6(k-1)*RDQ(k-6)
  19. *;
  20. SEZSEY    ZAC
  21.     LT    RDQ5
  22.     MPY    RB6
  23.     LTD    RDQ4
  24.     MPY    RB5
  25.     LTD    RDQ3
  26.     MPY    RB4
  27.     LTD    RDQ2
  28.     MPY    RB3
  29.     LTD    RDQ1
  30.     MPY    RB2
  31.     LTD    RDQ
  32.     MPY    RB1
  33.     APAC
  34. *;
  35. *; shift left by 1 to adjust decimal point
  36. *;
  37.     SACL    TEMP1
  38.     SACH    TEMP2
  39.     ADDH    TEMP2
  40.     ADDS    TEMP1
  41.     SACH    RSEZ,1    
  42. *;
  43. *; now compute signal estimate as 
  44. *;
  45. *;  RA1(k-1)*RSR(k-1) + RA2(k-1)*RSR(k-1) + RSEZ(k) 
  46. *;
  47. RGETSE  LAC    RSEZ,14
  48.     LT    RSR1
  49.     MPY    RA2
  50.     LTD    RSR
  51.     MPY    RA1
  52.     APAC
  53. *;
  54. *; shift left by 1 to adjust decimal point
  55. *;
  56.     SACL    TEMP1
  57.     SACH    TEMP2
  58.     ADDH    TEMP2
  59.     ADDS    TEMP1
  60.     SACH    RSE,1
  61. *;
  62. *; limit speed control parameter: AL===> 1.Q6  
  63. *;
  64. *; RAPP : 2.Q8
  65. *;
  66. *;    RAL = 1 (64)      if RAPP >  1
  67. *;    RAL = RAPP        if RAPP <= 1
  68. *;
  69. RLIMA    LAC    ONE,6
  70.     SACL    RAL
  71.     LAC    RAPP
  72.     SUB    ONE,8
  73.     BGEZ    RMIX        ;RAPP >= 256
  74.     LAC    RAPP,14
  75.     SACH    RAL        ;RAPP  < 256
  76. *;
  77. *; form linear combination of fast and slow scale factors
  78. *;
  79. *; RY(k) = (1-RAL(k))*RYL(k-1) + RAL(k)*RYU(k-1)
  80. *;
  81. RMIX    LAC    RYLL,10        ; shift yl right by 6
  82.     SACH    TEMP3
  83.     LAC    TEMP3
  84.     AND    M1023
  85.     ADD    RYLH,10
  86.     SACL    TEMP3        ; low half
  87.     LAC    RYU
  88.     SUB    TEMP3        ; RYU-(RYLL>>6)
  89.     SACL    TEMP3
  90.     ZALH    RYLH
  91.     ADDS    RYLL
  92.     LT    RAL
  93.     MPY    TEMP3
  94.     APAC            ; RYL + RAL*(RYU-(RYLL>>6))
  95.     SACL    TEMP3
  96.     SACH    TEMP2
  97.     LAC    TEMP3,10    ; shift right by 6
  98.     SACH    TEMP3
  99.     LAC    TEMP3
  100.     AND    M1023        ; mask sign extension
  101.     ADD    TEMP2,10
  102.     AND    M8191
  103.     SACL    RY
  104.     LAC    RY,14
  105.     SACH    TEMP3
  106. *;
  107. *;**********************************************************
  108. *; INVERSE ADAPTIVE QUANTIZER
  109. *;
  110. *;    input:    4b quantized samples    -- RI
  111. *;        scale factor (QADAPT)    -- RY
  112. *;    output: reconstructed diff sig    -- RDQ
  113. *;**********************************************************
  114. *;
  115. *; first convert received nibble back to log domain
  116. *;
  117. RIAQUA    LACK    7
  118.     AND    RI
  119.     SACL    RIM
  120.     LAC    RI
  121.     SUB    ONE,3
  122.     BLZ    POSRI
  123.     LACK    7
  124.     XOR    RIM
  125.     SACL    RIM
  126. POSRI    LAC    RIM
  127.     ADD    INQTAB    ; reconst table
  128.     TBLR    TEMP1
  129. *;
  130. *; add back scale factor
  131. *;
  132. RADDA    LAC    TEMP1
  133.     ADD    TEMP3    ; Y >> 2
  134.     AND    M2047
  135.     SACL    TEMP2
  136. *;
  137. *; now covert to linear domain
  138. *;
  139. RALOG    LAC    TEMP2,9        ; extract exp
  140.     SACH    TEMP1
  141.     LACK    127
  142.     AND    TEMP2
  143.     ADD    ONE,7        ; 1+x
  144.     SACL    TEMP2        ; extract mantissa
  145.     LT    TEMP2        ; prepare to shift
  146.     LAC    TEMP1
  147.     ADD    SHIFT        ; ptr to table of multipliers
  148.     TBLR    TEMP3
  149.     MPY     TEMP3        ; integer multiply
  150.     PAC
  151.     BLZ    RLEFTS
  152.     SACH    RDQ,1        ; dqmag
  153.     B    RADDSG
  154. RLEFTS    ABS
  155.     SACL    RDQ        ; dqmag
  156. RADDSG    LAC    ONE,11
  157.     SACL    RSDQ
  158.     LAC    RI        ; check sign
  159.     SUB    ONE,3    
  160.     BLZ    RQSFA
  161.     ZAC
  162.     SUB    RDQ
  163.     SACL    RDQ
  164.     LAC    MINUS,11
  165.     SACL    RSDQ
  166. *;
  167. *;********************************************************
  168. *; QUANTIZER SCALE FACTOR ADAPTATION
  169. *;
  170. *;    input:      RI : 32KB coded samples
  171. *;    output: RYU,RYLL: next sample scale factor
  172. *;********************************************************
  173. *; First compute WI
  174. *;
  175. *;     input --RIM
  176. *;     output--TEMP1 (WI)
  177. *;
  178. RQSFA    LAC    WITAB        ; get table address and offset
  179.     ADD    RIM
  180.     TBLR     TEMP1        ; lookup WI (Q6)
  181. *;    
  182. *; Update fast adaptation scale factor -- constant=1/32
  183. *;
  184. *;   RYU(k)=(1-2**-5)*Y(k)+(2**-5)*WI(k)
  185. *; 
  186. *;     input --TEMP1  (WI--- TC   6...Q4)
  187. *;     output--RYU    (RYU---SM    3...-9)
  188. *;
  189. RFILTD    LAC    RY,12        ; RY     (Q21)
  190.     SUB    RY,7        ; RY/32    (Q21)
  191.     ADD    TEMP1,12    ; WI/32 (Q21)
  192.     SACH    RYU,4        ; RYU    (Q9)
  193.     LAC    RYU
  194.     AND    M8191
  195.     SACL    RYU    
  196. *;
  197. *; limit quant scale factor 1.06 <= RYU <= 10.0 : 9 CLOCKS
  198. *;
  199. *;    input: RYU    (3...-9)
  200. *;    ouput: RYU       
  201. *;
  202. RLIMB    SUB    K544        ; check lo threshold
  203.     BGEZ    RCHKHI
  204.     LAC    K544
  205.     B    RSTRLI        ; go store limited value
  206. RCHKHI    SUB    K4576        ; check hi threshold
  207.     BLEZ    RFILTE        ; within limits--continue
  208.     LAC    K5120
  209. RSTRLI    SACL    RYU
  210. *;
  211. *; Update slow adaptation scale factor -- constant = 1/64 : 28 CLOCKS
  212. *;
  213. *; RYL = (1-2**-6)*RYL + 2**-6 * RYU
  214. *;
  215. RFILTE  LAC    RYLH,6        ; shift ryl left by 6
  216.     SACL    TEMP1
  217.     LAC    RYLL,6
  218.     SACL    TEMP2
  219.     SACH    TEMP3
  220.     LAC    TEMP3        ; suppress sign extension
  221.     AND    M63
  222.     SACL    TEMP3
  223.     ZALH    TEMP1
  224.     ADDH    TEMP3
  225.     ADDS    TEMP2
  226.     SUBH    RYLH
  227.     SUBS    RYLL
  228.     ADD    RYU,6
  229.     SACL    TEMP1
  230.     SACH    TEMP2        ; result = yl (shifted left by 6)
  231.     LAC    TEMP1,10    ; shift result right 6 --> 4.q15
  232.     SACH    TEMP1
  233.     LAC    TEMP1
  234.     AND    M1023        ; mask sign extension
  235.     ADD    TEMP2,10
  236.     SACL    RYLL
  237.     SACH    RYLH
  238.     LACK    7        ; mask upper 13 bits
  239.     AND    RYLH
  240.     SACL    RYLH
  241. *;
  242. *;*******************************************************
  243. *; ADAPTATION SPEED CONTROL
  244. *;
  245. *;    input:    RIM
  246. *;    output:    RAPP
  247. *;*******************************************************
  248. *;
  249. *; first compute FI function
  250. *;
  251. RSPDCR    LAC    FITAB    ; look-up value of FI function
  252.     ADD    RIM
  253.     TBLR    TEMP1    ; FI*16
  254. *;
  255. *; now update short term average of FI 
  256. *;
  257. *; RDMS(k) = (1-2**-5)*RDMS(k-1) + 2**-5 * FI(k)
  258. *;
  259. RFILTA    LAC    TEMP1,15    ; FI/32 in q24
  260.     ADD    RDMS,15
  261.     SUB    RDMS,10        ; RDMS/32
  262.     SACH    RDMS,1
  263. *;
  264. *; update long term average of FI 
  265. *;
  266. *; RDML(k) = (1-2**-7)*RDML(k-1) + 2**-7 * FI(k)
  267. *;
  268. RFILTB    LAC    TEMP1,15    ; FI/128 in q26
  269.     ADD    RDML,15
  270.     SUB    RDML,8        ; RDML/128
  271.     SACH    RDML,1
  272. *;
  273. *; Compute mag of diff of short and long term functions 
  274. *; of quantizer output sequence and perform threshold 
  275. *; comparison to compute speed control parameter--low-pass 
  276. *; result.
  277. *;
  278. *; RAPP(k) = (1-2**-4)*RAPP(k-1) + 2**-3 , if ry < 3 or
  279. *;        if |RDMS-RDML| > 2**-3 * RDML
  280. *; else
  281. *;
  282. *; RAPP(k) = (1-2**-4)*RAPP(k-1)        
  283. *;
  284. RFILTC ZALH    RAPP
  285.     SUB    RAPP,12
  286.     SACH    RAPP
  287.     LAC    RY
  288.     SUB    THREE,9
  289.     BLZ    RADD18
  290.     ZALH    RDMS        ; RDMS (Q25)
  291.     SUB    RDML,14        ; RDMS-RDML
  292.     ABS
  293.     SUB    RDML,11
  294.     BLZ    RAPRED
  295. RADD18  LAC    RAPP
  296.     ADD    ONE,5
  297.     SACL    RAPP        ; 1/8 in Q8
  298. *;
  299. *;*************************************************
  300. *; ADAPTIVE PREDICTOR: compute signal estimate 
  301. *;
  302. *;    input:    RDQ    quantized difference
  303. *;    output: RSE    signal estimate
  304. *;*************************************************
  305. *;
  306. *; compute reconstructed signal:  DQ + SE 
  307. *;
  308. RAPRED    LAC    RDQ
  309.     ADD    RSE
  310.     SACL    RSR        
  311. *;
  312. *; compute coefficients of 6th order predictor 
  313. *;
  314. *; RBi(k) = (1-2**-8)*RBi(k-1) 
  315. *;         + 2**-7 * SGN[RDQ(k)] * SGN[RDQ(k-1)]
  316. *;
  317. *;     for i = 1...6
  318. *;     and RBi is implicitly limited to +/- 2
  319. *;                                             
  320. RGETB6    LT    RSDQ6
  321.     LAC    RB6,15    ; Q29
  322.     SUB    RB6,7    ; RB6 * 2**-7  (Q29)
  323.     MPY    RSDQ    ; SGN(RSDQ)*SGN(RSDQ6) * 2**-7  (Q29)
  324.     LTD    RSDQ5
  325.     SACH    RB6,1    ; 1.Q14
  326. RGETB5    LAC    RB5,15
  327.     SUB    RB5,7
  328.     MPY    RSDQ
  329.     LTD    RSDQ4
  330.     SACH    RB5,1
  331. RGETB4    LAC    RB4,15
  332.     SUB    RB4,7
  333.     MPY    RSDQ
  334.     LTD    RSDQ3
  335.     SACH    RB4,1
  336. RGETB3    LAC    RB3,15
  337.     SUB    RB3,7
  338.     MPY    RSDQ
  339.     LTD    RSDQ2
  340.     SACH    RB3,1
  341. RGETB2    LAC    RB2,15
  342.     SUB    RB2,7
  343.     MPY    RSDQ
  344.     LTD    RSDQ1
  345.     SACH    RB2,1
  346. RGETB1    LAC    RB1,15
  347.     SUB    RB1,7
  348.     MPY    RSDQ
  349.     LTD    RSDQ
  350.     SACH    RB1,1
  351. *;
  352. *; Update coefficients of 2nd order predictor 
  353. *;
  354. *; First get sign of sum of quantized diff and 
  355. *; partial sig estimate
  356. *;
  357. RADDC    DMOV    RPK1        ; RPK1==>RPK2
  358.     DMOV    RPK0        ; RPK0==>RPK1
  359.     LAC    ONE,9
  360.     SACL    RPK0
  361.     LAC    RSEZ
  362.     ADD    RDQ
  363.     BGEZ    RSUMGT        ; is RSEZ+RDQ negative?
  364.     LAC    MINUS,9
  365.     SACL    RPK0
  366. RSUMGT    LT    RPK0
  367. *;
  368. *;  now calculate f[RA1(k-1)]  ==> TEMP3 will get 1/2 F 
  369. *;
  370. *;        = 4*RA1       if |RA1|  <= 1/2
  371. *;        = 2*SGN(RA1)  if |RA1|  >  1/2
  372. *;
  373. RGETF    LAC    RA1,1        ; 2*RA1
  374.     SACL    TEMP3
  375.     BLZ    RGETF2
  376. RGETF1    SUB    ONE,14
  377.     BLZ    RGETA1
  378.     LAC    ONE,14
  379.     B    RDONEF
  380. RGETF2    ABS
  381.     SUB    ONE,14
  382.     BLZ    RGETA1
  383.     LAC    MINUS,14
  384. RDONEF    SACL    TEMP3
  385. *;
  386. *;  A1(k) = (1-2**-8)*A1(k-1) 
  387. *;        + (3*2**-8)*SGN[p(k)]*SGN[p(k-1)]
  388. *;          
  389. RGETA1    LAC    RA1,12
  390.     SUB    RA1,4
  391.     MPY    RPK1        ; 3*SGN[rp(k-1)*SGN[rp(k)]
  392.     APAC
  393.     APAC
  394.     APAC
  395.     SACH    RA1,4
  396.     PAC        ; save sign of SGN[rp(k-1)]*SGN[rp(k)]
  397. *;
  398. *; RA2(k) = (1-2**-7)*RA2(k-1) 
  399. *;         + (2**-7)*{SGN[rp(k)]*SGN[(rp(k-2)]  
  400. *;         - f[RA1(k-1)]*SGN[rp(k)]*SGN[rp(k-1)]}
  401. *;
  402. RGETA2    BGEZ    RSUBF        ; if sign + --> subtract F
  403.     ZAC            ;  else negate F and subtract
  404.     SUB    TEMP3
  405.     SACL    TEMP3
  406. *;
  407. RSUBF    LAC    RA2,12
  408.     SUB    RA2,5
  409.     MPY    RPK2
  410.     APAC
  411.     APAC
  412.     SUB    TEMP3,6    
  413.     SACH    RA2,4
  414. *;
  415. *; now limit RA2 to +/- .75 and prevent overflow
  416. *;
  417. RLIMC    LAC    RA2
  418.     ABS
  419.     SUB    THREE,12    ; |value| must be < .75
  420.     BLEZ    RLIMD
  421.     LAC    RA2
  422.     BGEZ    RSATPO
  423. RSATNE  LAC    MINUS3,12
  424.     B    RDONEC
  425. RSATPO    LAC    THREE,12
  426. RDONEC    SACL    RA2
  427. *;
  428. *; limit RA1 to +/-  1-2**-4 - RA2  
  429. *;
  430. RLIMD   LAC    M15,10
  431.     SUB    RA2
  432.     SACL    TEMP1        ; 1-2**-4-RA2
  433.     LAC    RA1
  434.     ABS
  435.     SUB    TEMP1
  436.     BLEZ    GETSR        ; RA1 <= LIMIT
  437.     LAC    RA1
  438.     BGEZ    RA1LIM
  439.     ZAC
  440.     SUB    TEMP1
  441.     SACL    TEMP1
  442. RA1LIM    LAC    TEMP1
  443.     SACL    RA1
  444. *;
  445. *; now convert linear output sample to mu-law PCM
  446. *;
  447. GETSR    LAC    RSR        ; get reconstructed signal
  448.     SACL    SAMPLE        ; save for output
  449. *;
  450. SKIP1    ZAC            ; Assume positive input
  451.     SACL    SCRACH
  452.       LAC    SAMPLE        ; Load as is
  453. *;
  454. *;    Check for sign and taking absolute value
  455. *;
  456.     BGEZ    SAT        ;Branch if number is positive
  457.     ABS              ;Take absolute value of Sample
  458.     SACL    SAMPLE        ;Store absolute value in Sample
  459.     LACK    128        ;Negative value handling
  460.     SACL    SCRACH
  461.     LAC    SAMPLE
  462. *;
  463. SAT    SUB    T9        ; Sample - T9 to check for saturation
  464.     BLEZ    BYPASS        ; Branch to Bypass for non-saturation
  465.     LACK     127
  466.     SACL    SAMPLE
  467.     B    STEP        ; Saturation handling complete
  468. *;
  469. BYPASS    LAC    SAMPLE        ; Reset accumulator with absolute value
  470.     SUB    ONE,2        ;Subtract T1 =4 from Sample
  471.     BLZ    DONE           ;Codec value at sign is the final value
  472. *;
  473. TT5    LAC    SAMPLE        ;Load absolute value back into accum. 
  474.     SUB    T5         ;Sample - T5
  475.     BLZ    BOT         ;Bottom half of the mu-law curve
  476. *;
  477. TT7    SUB    ONE,12        ; Sample-T7 = Sample -T5 -(T7-T6) -
  478.     SUB    ONE,11        ; (T6-T5)
  479.     BLZ    TT6        ;Branch to compare with T6
  480. *;
  481. TT8    SUB    ONE,13        ; Sample-T8 = Sample -T7 -(T8-T7)
  482.     BLZ    SEG7        ;7-th Segment identified
  483. *;
  484.     SACL    SAMPLE
  485.     LAC    SAMPLE,6
  486.     SACH    SAMPLE
  487.     LACK    112        ; Segment = 8
  488.     ADD    SAMPLE
  489.     SACL    SAMPLE
  490.     B    STEP        ;Branch to stepcode computation
  491. *;
  492. SEG7    ADD    ONE,13        ; Sample-T7 = Sample-T8 +(T8-T7)
  493.     SACL    SAMPLE
  494.     LAC    SAMPLE,7
  495.     SACH    SAMPLE
  496.     LACK    96        ; Segment = 7
  497.     ADD    SAMPLE
  498.     SACL    SAMPLE
  499.     B    STEP        ;Branch to step code computation
  500. *;
  501. TT6    ADD    ONE,12        ; Sample - T6 = Sample -T7+(T7-T6)
  502.     BLZ    SEG5        ;5-th segment identified
  503. *;
  504.     SACL    SAMPLE
  505.     LAC    SAMPLE,8
  506.     SACH    SAMPLE
  507.     LACK    80        ; Segment = 6
  508.     ADD    SAMPLE
  509.     SACL    SAMPLE
  510.     B    STEP        ;Branch to step code computation
  511. *;
  512. SEG5    ADD    ONE,11        ; Sample - T5 = Sample -T6 + (T6-T5)
  513. *;
  514.     SACL    SAMPLE
  515.     LAC    SAMPLE,9
  516.     SACH    SAMPLE
  517.     LACK    64        ; Segment = 5
  518.     ADD    SAMPLE
  519.     SACL    SAMPLE
  520.     B    STEP        ;Branch to step code computation
  521. *;-------------------------------------------------------------------------
  522. *;    Comparisons for upper half of the curve is complete.  The next
  523. *;    set of comparisons is for searching in the lower half of mu-law curve.
  524. *;-------------------------------------------------------------------------
  525. BOT    ADD    ONE,10        ; Sample-T3 = Sample -T5 +(T5-T4) +
  526.     ADD    ONE,9        ; (T4-T3)
  527.     BLZ    TT2        ;Branch to compare with T2
  528. *;
  529. TT4    SUB    ONE,9        ;Sample - T4 = Sample-T3 -(T4-T3)
  530.     BLZ    SEG3        ;3-rd Segment identified
  531. *;
  532.     SACL    SAMPLE
  533.     LAC    SAMPLE,10
  534.     SACH    SAMPLE
  535.     LACK    48        ; Segment = 4
  536.     ADD    SAMPLE
  537.     SACL    SAMPLE
  538.     B    STEP        ;Branch to stepcode computation
  539. *;
  540. SEG3    ADD    ONE,9        ; Sample-T3 = Sample-T4 +(T4-T3)
  541. *;
  542.     SACL    SAMPLE
  543.     LAC    SAMPLE,11
  544.     SACH    SAMPLE
  545.     LACK    32        ; Segment =3
  546.     ADD    SAMPLE
  547.     SACL    SAMPLE
  548.     B    STEP        ;Branch to step code computation
  549. *;
  550. TT2    ADD    ONE,8        ;Sample-T2 = Sample-T3 +(T3-T2)
  551.     BLZ    SEG1        ;First segment identified
  552. *;
  553.     SACL    SAMPLE
  554.     LAC    SAMPLE,12
  555.     SACH    SAMPLE
  556.     LACK    16        ; Segment = 2
  557.     ADD    SAMPLE
  558.     SACL    SAMPLE
  559.     B    STEP        ;Branch to step code computation
  560. *;
  561. SEG1    ADD    ONE,7        ;Sample -T1 = Sample+(T2+4) -
  562.     SUB    ONE,3        ;    (T1 +4) --T1=4,T2=124
  563. *;
  564.     SACL    SAMPLE
  565.     LAC    SAMPLE,13
  566.     SACH    SAMPLE
  567.     LACK    1        ; Segment = 1. ADD 1 for Seg1 corrn.
  568.     ADD    SAMPLE
  569.     SACL    SAMPLE
  570. *;
  571. STEP    LAC    SCRACH
  572.     ADD    SAMPLE
  573.         XOR     M255
  574.     SACL    SCRACH
  575. DONE    OUT    SCRACH,DAC
  576. *;*********************************************************
  577. INTRET    EINT
  578.     RET
  579. *;
  580. *;
  581. *;*********************************************************
  582. *; SYSTEM INITIALIZATION
  583. *;*********************************************************
  584. *;
  585. RESET    DINT            ; Disable interrupts
  586.     LDPK    0        ; Initialize data page
  587. *;
  588. SETPAC    LARK    0,143
  589.     LARP    0
  590.     ZAC            ; Zero iram
  591. ZRAMA    SACL    *,0,0
  592.     BANZ     ZRAMA
  593. *;
  594.     LACK    1        ; Initialize constant ONE
  595.     SACL    ONE        
  596.     SUB    ONE,1
  597.     SACL    MINUS        ; MINUS
  598. *;
  599.     CALL    INIT1        ; initialize CCITT parms 
  600.     EINT            ; Enable TMS320 interrupts
  601. WAIT    NOP
  602.     B    WAIT        ; Loop to wait for command
  603. *;
  604.     PAGE
  605. *;
  606. *;********************************************************
  607. *; INITIALIZE 32K CCITT VARIABLES
  608. *;********************************************************
  609. *;
  610. INIT1    LT    ONE
  611.     LACK    3        ; 3
  612.     SACL    THREE
  613.     SUB    THREE,1        ; -3
  614.     SACL    MINUS3
  615. *;
  616.     LACK    15        ; 15
  617.     SACL    M15
  618. *;
  619.     LACK    63        ; 63
  620.     SACL    M63    
  621. *;
  622.     LACK    127        ; 127
  623.     SACL    M127
  624.         LACK    255
  625.         SACL    M255
  626.     LAC    ONE,9        ; 544
  627.     ADD    ONE,5
  628.     SACL    K544    
  629. *;
  630.     LAC    ONE,10        ; 1023
  631.     SUB    ONE
  632.     SACL    M1023
  633. *;
  634.     LAC    ONE,12        ; 4096
  635.     ADD    ONE,10        ; + 1024 = 5120  (hi limit for LIMB)
  636.     SACL    K5120
  637.     SUB    K544        ; 4576
  638.     SACL    K4576
  639. *;
  640.     LAC    ONE,11        ; 2047
  641.     SUB    ONE
  642.     SACL    M2047
  643.     ADD    ONE,11        ; 4095
  644.     SACL    M4095
  645.     ADD    ONE,12        ; 8191
  646.     SACL    M8191
  647.     ADD    THREE,13    ; 32767
  648.     SACL    M32767
  649. *;
  650.     LAC    ONE,11        ; constant for lin/codec conv
  651.     SUB    ONE,7
  652.     SUB    ONE,2
  653.     SACL    T5
  654. *;
  655.     LAC    ONE,15        ; constant for lin/codec conv
  656.     SUB    ONE,7
  657.     SUB    ONE,3
  658.     SACL    T9
  659. *;
  660.     MPYK    IQTAB        ; Init inverse quant table addr
  661.     PAC
  662.     SACL    INQTAB    
  663. *;
  664.     MPYK    SHFT        ; Init shift mult table addr
  665.     PAC
  666.     SACL    SHIFT
  667. *;
  668.     MPYK    WTABLE        ; Init WI lookup table address
  669.     PAC    
  670.     SACL    WITAB
  671. *;
  672.     MPYK    FITABL        ; Init FI lookup table address
  673.     PAC
  674.     SACL    FITAB
  675. *;
  676.     MPYK    CODADD        ; mu-law coding table
  677.     PAC
  678.     SACL    CODEAD
  679. *;
  680.     MPYK    ITAB4        ; constants for QUAN table
  681.     PAC
  682.     SACL    K2309
  683.     LACK    138
  684.     SACL    K138
  685.     LACK    130
  686.     SACL    K130
  687.     LACK    79
  688.     SACL    K79
  689.     LACK    95
  690.     SACL    K95
  691.     LACK    46
  692.     SACL    K46
  693.     LACK    49
  694.     SACL    K49
  695. *;
  696. INIT2    LAC    ONE,9        ; 512
  697.     SACL    PK0        ; init sign of pk to 1
  698.     SACL    PK1
  699.     SACL    RPK0
  700.     SACL    RPK1
  701. *;
  702.     LAC    K544
  703.     SACL    YU        ; initial value
  704.     SACL    RYU
  705. *;
  706.     LAC    ONE,15
  707.     ADD    ONE,11
  708.     SACL    YLL        ; initial value
  709.     SACL    RYLL
  710. ;
  711.     LAC    ONE,11
  712.     SACL    SDQ1
  713.     SACL    SDQ2
  714.     SACL    SDQ3
  715.     SACL    SDQ4
  716.     SACL    SDQ5
  717.     SACL    SDQ6
  718.     SACL    RSDQ1
  719.     SACL    RSDQ2
  720.     SACL    RSDQ3
  721.     SACL    RSDQ4
  722.     SACL    RSDQ5
  723.     SACL    RSDQ6
  724. *;
  725.         RET      
  726.